//
//  HZEmticonTools.swift
//  HansWeibo
//
//  Created by Hans on 16/8/19.
//  Copyright © 2016年 Hans. All rights reserved.
//

import UIKit

// 最多显示的列数和行数 和最多显示的表情个数
let HZEmticonsMaxCol = 7
let HZEmticonsMaxRow = 3
let HZEmticonsMaxCount = HZEmticonsMaxCol * HZEmticonsMaxRow - 1

class HZEmticonTools: NSObject {
    // 全局访问点
    static let sharedTools: HZEmticonTools = HZEmticonTools()
    // 读取bundle 文件
    lazy var emticonsBundle: NSBundle = {
        // 路径
        let path = NSBundle.mainBundle().pathForResource("Emoticons.bundle", ofType: nil)!
        
        return NSBundle(path: path)!
    }()
    
    // 默认表情一维数组
    lazy var defaultEmoticons: [HZEmoticonsModel] = {
        return self.getEmoticonsWithPath("default")
    }()
    // emoji表情一维数组
    lazy var emojiEmoticons: [HZEmoticonsModel] = {
       return self.getEmoticonsWithPath("emoji")
    }()
    // 浪小花表情一维数组
    lazy var lxhEmotictons: [HZEmoticonsModel] = {
        return self.getEmoticonsWithPath("lxh")
    }()
    
    
    // 三维数组
    lazy var allEmoticons: [[[HZEmoticonsModel]]] = {
        return [
            self.getEmoticonsGroupsWithEmoticons(self.defaultEmoticons),
            self.getEmoticonsGroupsWithEmoticons(self.emojiEmoticons),
            self.getEmoticonsGroupsWithEmoticons(self.lxhEmotictons)
        ]
    }()
    
    
    
    // 一维数组转二维数组
    func getEmoticonsGroupsWithEmoticons(emticons:[HZEmoticonsModel])->[[HZEmoticonsModel]]{
        // 获取最多显示的页数
        let pageCount = (emticons.count + HZEmticonsMaxCount - 1)/HZEmticonsMaxCount
        // 创建一个可变的二维临时数组
        var tempArray:[[HZEmoticonsModel]] = [[HZEmoticonsModel]]()
        // 遍历页数
        for i in 0..<pageCount {
            let location = i * HZEmticonsMaxCount
            var length = HZEmticonsMaxCount
            // 由于默认表情是108个 遍历到最后一组 只有[100,8]
            if location + length > emticons.count {
                length = emticons.count - location
            }
            // 范围
            let range = NSRange(location: location, length: length)
            // 数组截取
            let array = (emticons as NSArray).subarrayWithRange(range) as! [HZEmoticonsModel]
            // 添加 一维数组
            tempArray.append(array)
        }
        return tempArray
    }
    
    
    
    
    // 读取plist 文件 得到一维数组
    func getEmoticonsWithPath(path:String) -> [HZEmoticonsModel]{
        
        let file = emticonsBundle.pathForResource("\(path)/info.plist", ofType: nil)!
        let array = NSArray(contentsOfFile: file)!
        // 创建一个临时可变数组
        var tempArray: [HZEmoticonsModel] = [HZEmoticonsModel]()
        // 遍历数组 字典转模型
        for dic in array {
            let model = HZEmoticonsModel(dict: dic as! [String: AnyObject])
            // 设置路径
            model.path = "\(path)/"
            // 添加模型到数组中
            tempArray.append(model)
        }
        return tempArray
    }
    
}
